import request from './request';

/**
 * 文件上传
 * @param {File} file 文件对象
 * @returns {Promise} 上传结果
 */
export function uploadFile(file) {
  const formData = new FormData();
  formData.append('file', file);
  
  return request({
    url: '/file/upload',
    method: 'post',
    data: formData,
    headers: {
      'Content-Type': 'multipart/form-data'
    }
  });
}

/**
 * 上传文件并支持本地预览
 * @param {File} file 文件对象
 * @param {Function} onPreview 预览回调，参数为预览URL
 * @returns {Promise} 上传结果
 */
export function uploadFileWithPreview(file, onPreview) {
  return new Promise((resolve, reject) => {
    // 创建本地预览
    if (file && onPreview) {
      const reader = new FileReader();
      reader.readAsDataURL(file);
      reader.onload = () => {
        onPreview(reader.result);
      };
    }
    
    // 上传文件
    uploadFile(file)
      .then(resolve)
      .catch(error => {
        // 上传失败时清除预览
        if (onPreview) {
          onPreview('');
        }
        reject(error);
      });
  });
}

/**
 * 获取图片完整URL
 * @param {string} url 图片相对路径
 * @returns {string} 完整URL
 */
export function getImageUrl(url) {
  if (!url) return '';
  
  // 如果已经是完整URL则直接返回
  if (url.startsWith('http://') || url.startsWith('https://')) {
    return url;
  }
  
  // 处理相对路径，添加服务器基础URL import.meta.env.VITE_IMAGE_BASE_URL || 
  const baseUrl ='http://localhost:8080/api';
  
  console.log(baseUrl +url);
  
  // 确保路径格式正确，同时移除/api前缀（如果存在）
  if (url.startsWith('/uploads/')) {
    return baseUrl + url;
  } else if (url.startsWith('/api/uploads/')) {
    // 移除/api前缀以避免重复
    return baseUrl + url.substring(4);
  } else if (url.startsWith('uploads/')) {
    return baseUrl + '/' + url;
  } else {
    return baseUrl + '/uploads/' + url;
  }
  
} 